alarmReportModel = $alarmReportModel; $this->alarmRecordsModel = $alarmRecordsModel; $this->stationModel = $stationModel; $this->usersModel = $usersModel; } function randFloat($min=0, $max=1){ return $min + mt_rand()/mt_getrandmax() * ($max-$min); } /** * 获取地图上所有设备地址 以及信号统计 井类型统计 * */ public function getDeviceAddressList(){ // $deviceList=$this->mainDevice->select()->toArray(); $start=$_REQUEST['start']?$_REQUEST['start']*10000:0; $limit=$_REQUEST['limit']?:10000; // $deviceList=$this->deviceModel->dataRange()->limit($start,$limit)->cache(60)->column('id,point_x,point_y,addr,well_type'); // var_dump($deviceList); $addrList=array(); $addrList1=array(); $addrList2=array(); for($i=0;$i<15;$i++){ $a=mt_rand(); $b=mt_getrandmax(); $c=$a/$b; $lng=mt_rand(100, 118)+$c; $lat=mt_rand(25, 35)+$c; // var_dump($lng); // var_dump($lat); $item=array('value'=>[$lng, $lat],'name'=>"测试风场".$i,'address'=>'风场位置'.$i,'number'=>mt_rand(0, 20)); array_push($addrList,$item); $a=mt_rand(); $b=mt_getrandmax(); $c=$a/$b; $lng=mt_rand(100, 118)+$c; $lat=mt_rand(25, 35)+$c; // var_dump($lng); // var_dump($lat); $item=array('value'=>[$lng, $lat],'name'=>"测试风场".$i,'address'=>'风场位置'.$i,'number'=>mt_rand(0, 20)); array_push($addrList1,$item); $a=mt_rand(); $b=mt_getrandmax(); $c=$a/$b; $lng=mt_rand(100, 118)+$c; $lat=mt_rand(25, 35)+$c; // var_dump($lng); // var_dump($lat); $item=array('value'=>[$lng, $lat],'name'=>"测试风场".$i,'address'=>'风场位置'.$i,'number'=>mt_rand(0, 20)); array_push($addrList2,$item); } // foreach($deviceList as $val){ // $item=array('value'=>[$val['point_y'], $val['point_x']],'name'=>$val['addr']); // array_push($addrList,$item); // } $res['addrList']=$addrList; $res['addrList1']=$addrList1; $res['addrList2']=$addrList2; // $res['total']=$this->deviceModel->dataRange()->count(); $res['total']=80; return CatchResponse::success($res); } /** * 获取智能插座统计 * */ 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=0; $i<=11; $i++){ $day = date('Y-m' ,strtotime( '-' . $i .' Months', time())); // $nextday = date('Y-m' ,strtotime( '-' . $i-1 .' Months', time())); array_unshift($xAxisData,$day); // $count=$this->alarmReportModel->dataRange()->where('alarm_time','between',[$day."-01 00:00:00",$nextday."-01 00:00:00"])->count(); //模拟数量 $count=mt_rand(0,10); array_unshift($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','AlarmReason')->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); } }