StatController.php 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. <?php
  2. namespace App\Community\Controllers;
  3. use App\Http\Controllers\Controller;
  4. use App\Models\Order;
  5. use App\Models\Schedule;
  6. use App\Models\SchedulePeriod;
  7. use App\Models\Vaccine;
  8. class StatController extends Controller
  9. {
  10. //疫苗统计
  11. public static function vaccine()
  12. {
  13. $data ['sum_num'] = Vaccine::count();
  14. $data['have_num'] = Vaccine::sum('stock');
  15. $data['less_num'] = Vaccine::where(['stock'=>0])->count();//取苗钟数
  16. $data['today_schedule'] = Order::where(['order_status'=>1])->where('product_type',4)->where('created_at','>',date('Y-m-d H:i:s',time()))->count();
  17. $data['today_vaccine'] = Order::where(['product_type'=>4])->with('orderPatient','appoint_start_time',strtotime('today'))->count();//接诊患者(人次)
  18. return $data;
  19. }
  20. //实时数据
  21. public static function service()
  22. {
  23. $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();
  24. $data['schedule_docter'] = SchedulePeriod::distinct('docter_id')->where('schedule_date',date('Y-m-d H:i:s',time()))->count();
  25. // $data['paitent_num'] = Order::where(['order_status'=>1])->distinct()->count()->BgroupBy('patient_id');
  26. $data['paitent_num'] = Order::whereHas('orderPatient',function ($query){
  27. $query->where(['appoint_start_time'=>strtotime('today')]);
  28. })->where(['product_type'=>4])->count();//接诊患者(人次)
  29. return $data;
  30. }
  31. //儿保概况
  32. public static function nurse()
  33. {
  34. $nurse_num = Order::where('prdoduct_type',5)->where('created_at','>',strtotime('today'));
  35. return $nurse_num;
  36. }
  37. //排班统计
  38. public static function schedule()
  39. {
  40. $data = SchedulePeriod::where('schedule_date',strtotime('today'))->distinct('docter_id')->get()->GroupBy('docter.type');
  41. return $data;
  42. }
  43. }