<?php /** * Created by PhpStorm. * User: ruidiudiu * Date: 2018/11/21 * Time: 17:20 */ namespace app\portal\controller; use cmf\controller\AdminBaseController; use think\Db; /** * Class AdminStatisticsController * @package app\portal\controller * @adminMenuRoot( * 'name' =>'数据统计', * 'action' =>'index', * 'parent' =>'', * 'display'=> true, * 'order' => 1, * 'icon' =>'th', * 'remark' =>'数据统计' * ) */ class AdminStatisticsController extends AdminBaseController{ public function index(){ $param=$this->request->param(); $where=array(); if (!empty($param['hospital'])){ $where['hospital'] } //医院总体时长统计 $data=Db::name('order') ->alias('a') ->field('b.hospital,count(*) as num') ->join('equipment b','a.eq_name=b.name') ->group('b.hospital') ->select()->toArray(); $hospital=array(); $num=array(); foreach ($data as $k=>$v){ $hospital[$k]=$v['hospital']; $num[$k]=$v['num']; } $this->assign('hospitalJson',json_encode($hospital)); $this->assign('num',json_encode($num)); //周统计 $week=array(); for ($i = 1; $i <= 31; $i++){ $week[31-$i]=strtotime(date('Ymd',strtotime("-$i monday"))); } $Week_interval=array(); for ($i = 0; $i<30; $i++){ $Week_interval[$i]=[$week[$i],$week[$i+1]]; } $Week_statistics=array(); $Week=array(); for ($i = 0; $i<30; $i++){ $Week[]=date('Y-m-d',$Week_interval[$i][1]); $Week_statistics[]=Db::name('order')->where('start_time','between',$Week_interval[$i])->count(); } $this->assign('week',json_encode($Week)); $this->assign('weekData',json_encode($Week_statistics)); //月统计 $month=array(); for ($i = 0; $i <= 24; $i++){ $month[24-$i]=strtotime(date('Y-m-1',strtotime("-$i Month"))); } $month_interval=array(); for ($i = 0; $i<24; $i++){ $month_interval[$i]=[$month[$i],$month[$i+1]]; } $Month_statistics=array(); $Month=array(); for ($i = 0; $i<24; $i++){ $Month[]=date('Y-m-d',$month_interval[$i][1]); $Month_statistics[]=Db::name('order')->where('start_time','between',$month_interval[$i])->count(); } $this->assign('month',json_encode($Month)); $this->assign('monthData',json_encode($Month_statistics)); //时间段统计 $interval=array(); $sql="SELECT count(*) as num FROM sleep_order where (FROM_UNIXTIME(start_time,'%H:%i:%S')>'00:00:00' AND FROM_UNIXTIME(start_time,'%H:%i:%S')<'07:00:00') OR (FROM_UNIXTIME(start_time,'%H:%i:%S')>'21:00:00' AND FROM_UNIXTIME(start_time,'%H:%i:%S')<'24:00:00')"; $interval[0]=Db::query($sql); $sql="SELECT count(*) as num FROM sleep_order where FROM_UNIXTIME(start_time,'%H:%i:%S')>'07:00:00' AND FROM_UNIXTIME(start_time,'%H:%i:%S')<'12:00:00'"; $interval[1]=Db::query($sql); $sql="SELECT count(*) as num FROM sleep_order where FROM_UNIXTIME(start_time,'%H:%i:%S')>'12:00:00' AND FROM_UNIXTIME(start_time,'%H:%i:%S')<'17:00:00'"; $interval[2]=Db::query($sql); $sql="SELECT count(*) as num FROM sleep_order where FROM_UNIXTIME(start_time,'%H:%i:%S')>'17:00:00' AND FROM_UNIXTIME(start_time,'%H:%i:%S')<'21:00:00'"; $interval[3]=Db::query($sql); foreach ($interval as $k=>$v){ $interval[$k]=$interval[$k][0]['num']; } $this->assign('interval',json_encode($interval)); $this->assign('hospital', isset($param['hospital']) ? $param['hospital'] : ''); $SQL=Db::name('order') ->alias('a') ->field('b.hospital') ->join('equipment b','a.eq_name=b.name') ->getLastSql(); dump($SQL); return $this->fetch(); } }