alarmReportModel = $alarmReportModel; $this->alarmRecordsModel = $alarmRecordsModel; $this->stationModel = $stationModel; $this->usersModel = $usersModel; } /** * 获取智能插座统计 * */ public function getSocketStationTotal(){ // $deviceList=$this->mainDevice->select()->toArray(); $request_interval=Db::table("sys_config")->where('type','station_config')->where('field','request_interval')->value('fieldValue'); $online_time=date('Y-m-d H:i:s',time()-$request_interval); $res=[]; $res['tatol']=$this->stationModel->dataRange()->where('station_type',3)->count(); $res['online']=$this->stationModel->dataRange()->where('station_type',3)->where('online_time','>',$online_time)->count(); $res['offline']=$res['tatol']-$res['online']; $yAxisData[]=$res['tatol']; $yAxisData[]=$res['online']; $yAxisData[]=$res['offline']; $xAxisData=["总数", "在线", "离线"];//X轴坐标 $total=array('yAxisData'=>$yAxisData,'xAxisData'=>$xAxisData); return CatchResponse::success($total); } /** * 电子校徽统计 * */ public function getSchoolBadgeTotal(){ $online_time=date('Y-m-d',time()).' 00:00:00'; $res=[]; $res['tatol']=$this->usersModel->dataRange()->where('card_type',2)->count(); $res['online']=$this->usersModel->dataRange()->where('card_type',2)->where('online_time','>',$online_time)->count(); $res['offline']=$res['tatol']-$res['online']; $yAxisData[]=$res['tatol']; $yAxisData[]=$res['online']; $yAxisData[]=$res['offline']; $yAxisData[]=0; $xAxisData=["总数", "在线", "离线",'围栏内'];//X轴坐标 $total=array('yAxisData'=>$yAxisData,'xAxisData'=>$xAxisData); return CatchResponse::success($total); } /** * 设备月告警统计 * */ public function deviceMonthAlarmData(){ $xAxisData = []; $yAxisData = []; for ($i=1; $i<=30; $i++){ $day = date('Y-m-d' ,strtotime( '+' . $i-30 .' days', time())); array_push($xAxisData,$day); $count=$this->alarmReportModel->dataRange()->where('alarm_time','between',[$day." 00:00:00",$day." 23:59:59"])->count(); array_push($yAxisData,$count); } $res=array('yAxisData'=>$yAxisData,'xAxisData'=>$xAxisData); return CatchResponse::success($res); } /** *围栏告警统计 * */ public function realTimeAlarmData(){ $time=date("Y-m-d"." 00:00:00",time()); $alarm_list = $this->alarmReportModel ->dataRange() ->field('id,active_rfid,created_at,alarm_type,alarm_time') ->where('alarm_time','>',$time) ->whereIn('alarm_type','fence_in,fence_out') ->select()->toArray(); $type_id = Db::table("sys_dict_type")->where('code','AlarmType')->value('id'); $scrollData=[]; foreach($alarm_list as $val){ $alarm_type = Db::table("sys_dict_data")->where(['type_id'=>$type_id,'code'=>$val['alarm_type']])->value('value'); $scrollItem=array('date'=>$val['alarm_time'],'title'=>'学生'.substr($val['active_rfid'],-5).'发生了'.$alarm_type); array_push($scrollData,$scrollItem); } $res=array('scrollData'=>$scrollData); return CatchResponse::success($res); } /** *SOS告警统计 * */ public function getSosScrollAlarmData(){ $time=date("Y-m-d"." 00:00:00",time()); $alarm_list = $this->alarmReportModel->dataRange()->where('alarm_time','>',$time)->where('alarm_type','press')->select()->toArray(); foreach($alarm_list as &$val){ $urgent_list=Db::table('kq_urgent')->where('student_id',$val['student_id'])->column('name,phone'); $urgent_text=''; foreach($urgent_list as $item){ $urgent_text .=$item['name'].'('.$item['phone'].'),'; } $urgent_text=trim($urgent_text,','); $val['urgent_text']=$urgent_text; } return CatchResponse::success($alarm_list); } }