Forráskód Böngészése

统计,快速预约,

渣渣宝 4 éve
szülő
commit
cf5c406cbd

+ 26 - 19
app/Community/Actions/Vaccine/FasteOrder.php

xqd xqd xqd xqd xqd
@@ -29,6 +29,8 @@ class FasteOrder extends Action
         $patientInfo = Patient::where(['id'=>$data['user']])->first()->toArray();
         $vaccineInfo = Vaccine::where(['id'=>$data['vaccine']])->first()->toArray();
         $orgVaccine = OrganizationVaccine::where(['vaccine_id'=>$data['vaccine'],'org_id'=>$org_id])->first()->toArray();
+
+
         DB::beginTransaction();
         try {
             $orderInfo = [
@@ -36,9 +38,16 @@ class FasteOrder extends Action
                 'organization_id'=>$org_id,
                 'order_sn'=>$patientInfo['user_id'],
                 'product_type'=>4,
-                'order_status'=>3,
+                'total_amount'=>$orgVaccine['price'],
+                'order_status'=>2,
                 'payment_status'=>2,
             ];
+
+            if($data['date'] == date('Y-m-d',time())){
+                $orderInfo['order_status'] = 3;
+//                $orderInfo['order_notes'] = '快速预约';
+                $orderInfo['receiving_time'] = time();
+            }
             $order = Order::create($orderInfo);
             $order_sn = build_sn($order['id']);
             Order::where('id', $order['id'])->update(['order_sn' => $order_sn]);
@@ -54,29 +63,25 @@ class FasteOrder extends Action
 
             $patienter = OrderPatient::create($addPatient);
             // todo 需要完善疫苗订单
-//            $vaccine = [
-//                'order_id'=>$order['id'],
-//                'order_patient_id'=>$patienter['id'],
-//                'vaccine_id'=>$orgVaccine['vaccine_id'],
-//                'vaccine_type'=>$orgVaccine['type'],
-//                'vaccine_price'=>$orgVaccine['price'],
-//                'vaccine_name'=>$vaccineInfo['name'],
-//                'vaccine_remark'=>$vaccineInfo['remark'],
-//                'vaccine_supplier'=>$orgVaccine['supplier'],
-//            ];
-//
-//            OrderVaccine::create($vaccine);
+            $vaccine = [
+                'order_id'=>$order['id'],
+                'order_patient_id'=>$patienter['id'],
+                'vaccine_id'=>$orgVaccine['vaccine_id'],
+                'vaccine_type'=>$orgVaccine['type'],
+                'vaccine_price'=>$orgVaccine['price'],
+                'vaccine_name'=>$vaccineInfo['name'],
+                'vaccine_remark'=>$orgVaccine['remark'],
+                'vaccine_supplier'=>$orgVaccine['supplier'],
+            ];
+            OrderVaccine::create($vaccine);
+            OrganizationVaccine::where(['vaccine_id'=>$data['vaccine'],'org_id'=>$org_id])->decrement('stock');
             DB::commit();
         } catch ( Exception $e){
             DB::rollBack();
             return $this->response()->error('添加订单失败');
         }
 
-
-
-
         return $this->response()->success('导入完成!')->refresh();
-
     }
 
     public function form()
@@ -85,8 +90,9 @@ class FasteOrder extends Action
         Admin::js('select2.js');
         $patient = Patient::pluck('name','id');
         $org_id = Admin::user()->org_id;
-        $ids = OrganizationVaccine::where(['org_id'=>$org_id])->pluck('vaccine_id');
+        $ids = OrganizationVaccine::where(['org_id'=>$org_id])->where('stock','>',0)->pluck('vaccine_id');
         $vaccine = Vaccine::whereIn('id',$ids)->pluck('name','id');
+        // todo 需要搜索
         $this->select('user', '接种人')->options($patient)->rules('required',['required'=>'请选择接种患者']);
         $this->select('vaccine', '疫苗')->options($vaccine)->rules('required',['required'=>'请选择疫苗']);
         $this->date('date','时间')->rules('required',['required'=>'请选择时间']);
@@ -104,12 +110,13 @@ HTML;
     {
 
         return <<<EOT
+        $("select[name='user']").select2({"allowClear":true,"placeholder":{"id":"","text":"\u75ab\u82d7"}});
         $('#date').blur(function () {
             var url = '';
             var date = $('#date').val();
             console.log(date);
             $.get("/cdms/api/getDateVaccine",{date: this.value}, function (data) {
-                var html = '';
+                var html = '<option value="">请选择时间段</option>';
                 for(let key  in data){
                 console.log(key + '---' + data[key])
                  html += '<option value="'+key+'">'+data[key]+'</option>';

+ 13 - 12
app/Community/Controllers/ApiController.php

xqd
@@ -100,24 +100,25 @@ class ApiController extends Controller
     {
         $date = request('d');
         $org_id = Admin::user()->org_id;
-        return [
-            1=>'09:00',
-            3=>'10:00',
-            4=>'11:00',
-            6=>'12:00',
-            7=>'13:00',
-        ];
+//        return [
+//            1=>'09:00',
+//            3=>'10:00',
+//            4=>'11:00',
+//            6=>'12:00',
+//            7=>'13:00',
+//        ];
         $timeIds = SchedulePeriod::where(['organization_id'=>$org_id,'schedule_date'=>$date])->distinct('time_period_id')->get(['time_period_id'])->toArray();
         if(empty($timeIds)) return [];
         $times = TimePeriod::whereIn('id',$timeIds)->where('start_time_period','>',date('H:i:s',time()))->get();
+        $timer = [];
         foreach ($times as $info){
             $timer[$info['id']] = $info['start_time_period'].'-'.$info['end_time_period'];
         }
-        return [
-            ['id'=>1,'text'=>'09:00'],
-            ['id'=>2,'text'=>'10:00'],
-            ['id'=>3,'text'=>'11:00'],
-        ];
+//        return [
+//            ['id'=>1,'text'=>'09:00'],
+//            ['id'=>2,'text'=>'10:00'],
+//            ['id'=>3,'text'=>'11:00'],
+//        ];
         return $timer;
 
     }

+ 32 - 45
app/Community/Controllers/HomeController.php

xqd
@@ -27,75 +27,62 @@ class HomeController extends Controller
             ->title('数据概况')
             ->description('社区段实时数据')
             ->row(function (Row $row){
-                   return $row->column(12,'<p style="font-family:Arial,Helvetica,sans-serif; font-size:1.2em; margin-top20px;vertical-align:middle; font-weight:normal ">实时概况</p>');
+                   return $row->column(12,'<p style="font-family:Arial,Helvetica,sans-serif; font-size:1.2em; margin-top20px;vertical-align:middle; font-weight:normal ">服务数据</p>');
             })
             ->row(function (Row $row){
-                $data = StatController::service();
-                $row->column(3,new InfoBox('今日预约数量(人次)', 'users', 'aqua', '/cdms/home', $data['schedule_paitent']));
-                $row->column(3,new InfoBox('今日排班(人)', 'calendar-check-o', 'aqua', '/cdms/home', $data['schedule_docter']));
-                $row->column(3,new InfoBox('接诊患者(人次)', 'user', 'aqua', '/cdms/home', $data['paitent_num']));
+                $data = StatController::orderTotal();
+                $row->column(3,new InfoBox('门诊订单总数(个)', 'users', 'aqua', '/cdms/home', $data[0]));
+                $row->column(3,new InfoBox('儿保订单总数(个)', 'calendar-check-o', 'aqua', '/cdms/home', $data[1]));
+                $row->column(3,new InfoBox('计免订单总数(个)', 'user', 'aqua', '/cdms/home', $data[2]));
+                $row->column(3,new InfoBox('服务患者次数(次)', 'user', 'aqua', '/cdms/home', $data[3]));
             })
             ->row(function (Row $row){
-                return $row->column(12,'<p style="font-family:Arial,Helvetica,sans-serif; font-size:1.2em; margin-top20px;vertical-align:middle; font-weight:normal ">疫苗概况</p>');
+                return $row->column(12,'<p style="font-family:Arial,Helvetica,sans-serif; font-size:1.2em; margin-top20px;vertical-align:middle; font-weight:normal ">门诊预约</p>');
             })
             ->row(function (Row $row){
-                $data = StatController::vaccine();
-                $row->column(3,new InfoBox('今日预约数量(人次)', 'users', 'aqua', '/cdms/home', $data['today_schedule']));
+                $data = StatController::clinc();
+
+                $row->column(3,new InfoBox('今日预约数量(人)', 'users', 'aqua', '/cdms/home', $data['today']));
 //                $row->column(3,new InfoBox('疫苗种类(种)', 'eyedropper', 'aqua', '/cdms/home', $data['sum_num']));
-                $row->column(3,new InfoBox('疫苗库存量)', 'home', 'aqua', '/cdms/home', $data['have_num']));
-                $row->column(3,new InfoBox('疫苗库存告急(种)', 'genderless', 'aqua', '/cdms/home', $data['less_num']));
+                $row->column(3,new InfoBox('今日排班人数(人)', 'home', 'aqua', '/cdms/home', $data['docters']));
+                $row->column(3,new InfoBox('昨日预约数量(人)', 'genderless', 'aqua', '/cdms/home', $data['yesterday']));
+                $row->column(3,new InfoBox('昨日接诊人数(人)', 'genderless', 'aqua', '/cdms/home', $data['people']));
 
             })
             ->row(function (Row $row){
-                $data = StatController::vaccine();
-                $row->column(3,new InfoBox('昨日接种量(人次)', 'genderless', 'aqua', '/cdms/home', $data['less_num']));
-                $row->column(3,new InfoBox('明日预约量(人次)', 'genderless', 'aqua', '/cdms/home', $data['less_num']));
+                return $row->column(12,'<p style="font-family:Arial,Helvetica,sans-serif; font-size:1.2em; margin-top20px;vertical-align:middle; font-weight:normal ">计免预约</p>');
+            })
+            ->row(function (Row $row){
+                $data = StatController::nurse();
 
-//                $row->column(3,new InfoBox('今日预约(人支)', 'hospital-o', 'aqua', '/cdms/home', $data['today_schedule']));
-//                $row->column(3,new InfoBox('预计今日消耗(支)', 'calendar', 'aqua', '/cdms/home', $data['today_vaccine']));
+                $row->column(3,new InfoBox('今日预约数量(人)', 'first-order', 'aqua', '/cdms/home', $data['today']));
+                $row->column(3,new InfoBox('昨日预约数量(人)', 'first-order', 'aqua', '/cdms/home', $data['yesterday']));
+                $row->column(3,new InfoBox('昨日接种人数(人)', 'first-order', 'aqua', '/cdms/home', $data['people']));
+                $row->column(3,new InfoBox('明日预约数量(人)', 'first-order', 'aqua', '/cdms/home', $data['tomorrow']));
             })
             ->row(function (Row $row){
-                return $row->column(12,'<p style="font-family:Arial,Helvetica,sans-serif; font-size:1.2em; margin-top20px;vertical-align:middle; font-weight:normal ">订单概况</p>');
+                return $row->column(12,'<p style="font-family:Arial,Helvetica,sans-serif; font-size:1.2em; margin-top20px;vertical-align:middle; font-weight:normal ">儿保预约</p>');
             })
             ->row(function (Row $row){
                 $data = StatController::nurse();
-                $row->column(3,new InfoBox('门诊订单(个)', 'first-order', 'aqua', '/cdms/home', $data[0]));
-                $row->column(3,new InfoBox('计免订单(个)', 'first-order', 'aqua', '/cdms/home', $data[1]));
-                $row->column(3,new InfoBox('儿保订单(个)', 'first-order', 'aqua', '/cdms/home', $data[2]));
+                $row->column(3,new InfoBox('今日预约数量(人)', 'first-order', 'aqua', '/cdms/home', $data['today']));
+                $row->column(3,new InfoBox('昨日预约数量(人)', 'first-order', 'aqua', '/cdms/home', $data['yesterday']));
+                $row->column(3,new InfoBox('昨日接种人数(人)', 'first-order', 'aqua', '/cdms/home', $data['people']));
+                $row->column(3,new InfoBox('明日预约数量(人)', 'first-order', 'aqua', '/cdms/home', $data['tomorrow']));
             })
             ->row(function (Row $row){
-                return $row->column(12,'<p style="font-family:Arial,Helvetica,sans-serif; font-size:1.2em; margin-top20px;vertical-align:middle; font-weight:normal ">今日排班         </p>');
+                return $row->column(12,'<p style="font-family:Arial,Helvetica,sans-serif; font-size:1.2em; margin-top20px;vertical-align:middle; font-weight:normal ">疫苗库存概况</p>');
             })
             ->row(function (Row $row){
-                $data = StatController::clinc();
-                $data = StatController::schedule();
-                $row->column(3,new InfoBox('计免医生(人)', 'hospital-o', 'aqua', '/cdms/home', $data['vaccine_num']));
-                $row->column(3,new InfoBox('儿保医生(人)', 'hospital-o', 'aqua', '/cdms/home', $data['nurse_num']));
-                $row->column(3,new InfoBox('门诊医生(人)', 'hospital-o', 'aqua', '/cdms/home', $data['clinic_num']));
+                $data = StatController::vaccineToal();
+
+                $row->column(3,new InfoBox('疫苗总库存(支)', 'first-order', 'aqua', '/cdms/home', $data['have_num']));
+                $row->column(3,new InfoBox('疫苗库存告急(中)', 'first-order', 'aqua', '/cdms/home', $data['less_num']));
+                $row->column(3,new InfoBox('昨日接种消耗(支)', 'first-order', 'aqua', '/cdms/home', $data['yesterday']));
             });
-//            ->row($this->real_data())
-//            ->row($this->vaccine_data())
-//            ->row($this->nurse_data())
-//            ->row($this->schedule_data());
     }
 
 
-//1. 门诊预约
-//(1) 今日预约数量
-//(2) 今日排班(人)
-//(3) 昨日预约数
-//(4) 昨日接诊人数
-//2. 计免预约
-//(1) 今日预约数量(人次)
-//(2) 疫苗库存量
-//(3) 疫苗库存告急(种)
-//(4) 昨日接种量(人次)
-//(5) 明日预约量(人次)
-//3. 儿保预约
-//(1) 今日预约数量(人次)
-//(2) 昨日预约数量(人次)
-//(3) 昨日服务数量(人次)
-//(4) 明日预约数量(人次)
 
     public function real_data()
     {

+ 93 - 26
app/Community/Controllers/StatController.php

xqd xqd xqd xqd xqd
@@ -7,6 +7,7 @@ namespace App\Community\Controllers;
 use App\Http\Controllers\Controller;
 use App\Models\Docter;
 use App\Models\Order;
+use App\Models\OrderVaccine;
 use App\Models\Schedule;
 use App\Models\SchedulePeriod;
 use App\Models\Vaccine;
@@ -22,7 +23,7 @@ class StatController extends  Controller
         self::$org_id = Admin::user()->org_id;;
     }
 
-    //疫苗统计
+    //疫苗预约
     public static function vaccine()
     {
         $where = [];
@@ -31,28 +32,88 @@ class StatController extends  Controller
         }
         $order = Order::where(['product_type'=>4])->where($where);
 
+        //今日预约
         $today = $order->whereHas('orderPatient',function ($query){
             $query->whereBetween('appoint_start_time',[strtotime('today'),strtotime('+1days')]);
         })->count();
 
+        //明日预约
         $tomorrow = $order->whereHas('orderPatient',function ($query){
-            $query->whereBetween('appoint_start_time',[date('Y-m-d',strtotime('-1days')),date('Y-m-d',time())]);
+            $query->whereBetween('appoint_start_time',[date('Y-m-d',strtotime('+1 days')),date('Y-m-d',strtotime('+2 days'))]);
         })->whereNotIn('order_status',[1,5,6])->count();
 
         //昨日接诊人数
-        $today = $order->whereBetween('end_time',[strtotime('-1days'),strtotime('today')])->where('order_status',4)->count();
+        $people = $order->whereBetween('end_time',[strtotime('-1days'),strtotime('today')])->where('order_status',4)->count();
+
+        //昨日预约
+        $yesterday = $order->whereHas('orderPatient',function ($query){
+            $query->whereBetween('appoint_start_time',[date('Y-m-d',strtotime('-1 days')),date('Y-m-d',strtotime('today'))]);
+        })->whereNotIn('order_status',[1,5,6])->count();
+
+        $data['today'] = $today;
+        $data['yesterday'] = $yesterday;
+        $data['people'] = $people;
+        $data['tomorrow '] = $tomorrow;
+
 
-        $data ['sum_num'] = Vaccine::where($where)->count();
-        $data['have_num'] = Vaccine::where($where)->sum('stock');
-        $data['less_num'] = Vaccine::where($where)->where(['stock'=>0])->count();//取苗钟数
-        $data['today_schedule'] = Order::where(['order_status'=>1])->where($where)->where('product_type',4)->where('created_at','>',date('Y-m-d H:i:s',time()))->count();
-        $data['today_vaccine'] = Order::where(['product_type'=>4])->where($where)->with('orderPatient','appoint_start_time',strtotime('today'))->count();//接诊患者(人次)
+//        $data ['sum_num'] = Vaccine::where($where)->count();
+//        $data['have_num'] = Vaccine::where($where)->sum('stock');
+//        $data['less_num'] = Vaccine::where($where)->where(['stock'=>0])->count();//取苗钟数
+//        $data['today_schedule'] = Order::where(['order_status'=>1])->where($where)->where('product_type',4)->where('created_at','>',date('Y-m-d H:i:s',time()))->count();
+//        $data['today_vaccine'] = Order::where(['product_type'=>4])->where($where)->with('orderPatient','appoint_start_time',strtotime('today'))->count();//接诊患者(人次)
         return $data;
 
     }
 
+    //儿保
+    public static function nurse()
+    {
+        $where = [];
+        if(self::$org_id){
+            $where['organization_id']=self::$org_id;
+        }
+        $order = Order::where(['product_type'=>5])->where($where);
 
+        //今日预约
+        $today = $order->whereHas('orderPatient',function ($query){
+            $query->whereBetween('appoint_start_time',[strtotime('today'),strtotime('+1days')]);
+        })->count();
+
+        //明日预约
+        $tomorrow = $order->whereHas('orderPatient',function ($query){
+            $query->whereBetween('appoint_start_time',[date('Y-m-d',strtotime('+1 days')),date('Y-m-d',strtotime('+2 days'))]);
+        })->whereNotIn('order_status',[1,5,6])->count();
+
+        //昨日服务人数
+        $people = $order->whereBetween('end_time',[strtotime('-1days'),strtotime('today')])->where('order_status',4)->count();
+
+        //昨日预约
+        $yesterday = $order->whereHas('orderPatient',function ($query){
+            $query->whereBetween('appoint_start_time',[date('Y-m-d',strtotime('-1 days')),date('Y-m-d',strtotime('today'))]);
+        })->whereNotIn('order_status',[1,5,6])->count();
+
+        $data['today'] = $today;
+        $data['tomorrow '] = $tomorrow;
+        $data['people'] = $people;
+        $data['yesterday'] = $yesterday;
+
+    }
 
+    //疫苗统计
+    public static  function vaccineToal()
+    {
+        $where = [];
+        if(self::$org_id){
+            $where['organization_id']=self::$org_id;
+        }
+
+        $data['have_num'] = Vaccine::where($where)->sum('stock'); //疫苗库存总数
+        $data['less_num'] = Vaccine::where($where)->where(['stock'=>0])->count();//缺苗钟数
+        $ids = Order::where(['product_type'=>4])->where($where)->with('orderPatient','appoint_start_time',strtotime('today'))->pluck('id')->toArray();//订单id
+        $data['yesterday']= OrderVaccine::whereIn('order_id',$ids)->count(); //疫苗订单总数
+
+        return $data;
+    }
     //实时数据
     public static function  service()
     {
@@ -68,23 +129,27 @@ class StatController extends  Controller
             $query->where(['appoint_start_time'=>strtotime('today')]);
         })->where(['product_type'=>4])->where($where)->count();//接诊患者(人次)
 
+
         return $data;
 
 
     }
 
     //订单概况
-    public static function nurse()
+    public static function orderTotal()
     {
         //3.门诊预约 4.疫苗接种预约 5.儿保预约
-         $where = [];
+        $where = [];
         if(self::$org_id){
-             $where['organization_id']=self::$org_id;
-         }
-         $nurse_num[] = Order::where('product_type',3)->where($where)->count();
-         $nurse_num[] = Order::where('product_type',4)->where($where)->count();
-         $nurse_num[] = Order::where('product_type',5)->where($where)->count();
-         return $nurse_num;
+            $where['organization_id']=self::$org_id;
+        }
+        //todo 是否需要区别状态
+        $order_num[] = Order::where('product_type',3)->where($where)->count();
+        $order_num[] = Order::where('product_type',4)->where($where)->count();
+        $order_num[] = Order::where('product_type',5)->where($where)->count();
+        $order_num[] = Order::whereIn('product_type',[3,4,5])->where($where)->count();
+
+        return $order_num;
     }
 
     //排班统计
@@ -123,23 +188,25 @@ class StatController extends  Controller
         $order = Order::where(['product_type'=>3])->where($where);
 
         //今日预约数
-        $today = $order->where('created_at','>=',date('Y-m-d'))->whereNotIn('order_status',[1,5,6])->count();
+        $today = $order->whereHas('orderPatient',function ($query){
+            $query->whereBetween('appoint_start_time',[strtotime('today'),strtotime('+1 days')]);
+        })->whereNotIn('order_status',[1,5,6])->count();
 
         //医生排班人数
-        $docters = SchedulePeriod::where(['schedule_date'=>date('Y-m-d',time())])->distinct('docter_id')->count('docter_id');
-
-        //昨日接诊人数
-        $yesterday = $order->whereBetween('end_time',[strtotime('-1days'),strtotime('today')])->where('order_status',4)->count();
+        $docters = SchedulePeriod::where(['schedule_date'=>date('Y-m-d',time())])->where($where)->distinct('docter_id')->count('docter_id');
 
-        //明日预约数
-        $tomorrow = $order->whereHas('orderPatient',function ($query){
-            $query->whereBetween('appoint_start_time',[strtotime('today'),strtotime('+1days')]);
+        //昨日预约
+        $yesterday = $order->whereHas('orderPatient',function ($query){
+            $query->whereBetween('appoint_start_time',[date('Y-m-d',strtotime('-1 days')),date('Y-m-d',strtotime('today'))]);
         })->whereNotIn('order_status',[1,5,6])->count();
 
+        //昨日接诊人数
+        $people= $order->whereBetween('end_time',[strtotime('-1days'),strtotime('today')])->where('order_status',4)->count();
+
         $data['today'] = $today;
-        $data['yesterday'] = $yesterday;
         $data['docters'] = $docters;
-        $data['tomorrow'] = $tomorrow;
+        $data['yesterday'] = $yesterday;
+        $data['people'] = $people;
 
         return $data;
     }

+ 3 - 1
app/Community/routes.php

xqd
@@ -24,7 +24,9 @@ Route::resource('offices', OfficeController::class);
 Route::resource('orders', OrderController::class);
 Route::resource('docter_org', DocterOrgController::class);
 Route::resource('docter_verifies', DocterVerifyController::class);
-//Route::resource('cdms_roles', PermissionController::class);
+
+//社区权限管理
+Route::resource('cdms_roles', PermissionController::class);
 Route::resource('docter_account', DocterAccountController::class);
 Route::resource('docter_chats', DocterChatController::class);