input('region_id', 0); $monitorId = $request->input('monitor_id', 0); $query = Device::query(); if($monitorId){ $deviceIds = MonitorDevice::where('monitor_id', $monitorId)->pluck('device_id')->toArray(); $query->whereIn('id', $deviceIds); }elseif($regionId){ $monitorIds = RegionMonitor::where('region_id', $regionId)->pluck('device_id')->toArray(); if(count($monitorIds) > 0){ $deviceIds = MonitorDevice::whereIn('monitor_id', $monitorIds)->pluck('id')->toArray(); $query->whereIn('id', $deviceIds); } } $query->groupBy('type')->groupBy('state'); $list = $query->select(DB::raw('type, state, count(1) as num '))->get(); $resData = []; foreach ($list as $item) { $resData[$item->type][$item->state] = $item->num; } //初始化数据; $data = []; foreach (Device::typeMap() as $typeKey => $typeName) { foreach (Device::stateMap() as $statusKey => $statusName) { $data[$typeKey][$statusKey] = $resData[$typeKey][$statusKey] ?? 0; } } return $this->json($data); } /** * 农机短信提醒-todo */ public function deviceNotice(){ return $this->success('操作成功'); } }