StatController.php 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. <?php
  2. namespace App\Community\Controllers;
  3. use App\Http\Controllers\Controller;
  4. use App\Models\Docter;
  5. use App\Models\Order;
  6. use App\Models\Schedule;
  7. use App\Models\SchedulePeriod;
  8. use App\Models\Vaccine;
  9. use Illuminate\Support\Facades\DB;
  10. class StatController extends Controller
  11. {
  12. //疫苗统计
  13. public static function vaccine()
  14. {
  15. $data ['sum_num'] = Vaccine::count();
  16. $data['have_num'] = Vaccine::sum('stock');
  17. $data['less_num'] = Vaccine::where(['stock'=>0])->count();//取苗钟数
  18. $data['today_schedule'] = Order::where(['order_status'=>1])->where('product_type',4)->where('created_at','>',date('Y-m-d H:i:s',time()))->count();
  19. $data['today_vaccine'] = Order::where(['product_type'=>4])->with('orderPatient','appoint_start_time',strtotime('today'))->count();//接诊患者(人次)
  20. return $data;
  21. }
  22. //实时数据
  23. public static function service()
  24. {
  25. $data['schedule_paitent'] = Order::where(['order_status'=>1])->whereIn('product_type',[3,4,5])->where('created_at','>',date('Y-m-d H:i:s',time()))->count();
  26. $data['schedule_docter'] = SchedulePeriod::distinct('docter_id')->where('schedule_date',date('Y-m-d H:i:s',time()))->count();
  27. // $data['paitent_num'] = Order::where(['order_status'=>1])->distinct()->count()->BgroupBy('patient_id');
  28. $data['paitent_num'] = Order::whereHas('orderPatient',function ($query){
  29. $query->where(['appoint_start_time'=>strtotime('today')]);
  30. })->where(['product_type'=>4])->count();//接诊患者(人次)
  31. return $data;
  32. }
  33. //儿保概况
  34. public static function nurse()
  35. {
  36. $nurse_num = Order::where('product_type',5)->where('created_at','>',strtotime('today'))->count();
  37. return $nurse_num;
  38. }
  39. //排班统计
  40. public static function schedule()
  41. {
  42. $ids = SchedulePeriod::where('schedule_date',date("Y-m-d"))->distinct('docter_id')->pluck('docter_id');
  43. $data = ['clinic_num'=>0,'vaccine_num'=>0,'nurse_num'=>0];
  44. if(empty($ids)){
  45. return $data;
  46. };
  47. $docters = Docter::whereIn('id',$ids->toArray())->get(['id','type'])->GroupBy('type');
  48. foreach ($docters as $key => $val){
  49. if($key === 1){
  50. $data['clinic_num'] = count($val);
  51. } else if($key == 2){
  52. $data['vaccine_num'] = count($val);
  53. } else if($key == 3){
  54. $data['nurse_num'] = count($val);
  55. }
  56. }
  57. return $data;
  58. }
  59. }