areaCode = $this->request->param('areaCode', ''); $this->streetCode = $this->request->param('streetCode', ''); if ($this->areaCode == '') { throw new ValidateException('未获取到位置信息'); } } // 设备告警统计 public function deviceAlarmCount() { $landId = $this->request->get('land_id', 0); $list = MonitorAlarm::alias('ma')->field('ma.*,d.code AS device_code,d.name AS device_name') ->join('device d', 'ma.device_id=d.id') ->join('product_device pd', 'd.id=pd.device_id') ->join('land_product lp', 'pd.product_id=lp.product_id') ->join('land l', 'l.id=lp.land_id') ->where(function ($query) use ($landId) { if ($landId != 0) { $query->where('ma.land_id', $landId); } else { if ($this->streetCode != '') { $query->where('l.town_code', $this->streetCode); } else { $query->where('l.county_code', $this->areaCode); } } }) ->whereWeek('ma.create_time') ->limit(30) ->fetchSql() ->select(); return $this->success('成功', compact('list')); } // 检测设备数量统计 public function deviceCount() { $total = Device::alias('d') ->join('product_device pd', 'd.id=pd.device_id') ->join('land_product lp', 'pd.product_id=lp.product_id') ->join('land l', 'l.id=lp.land_id') ->where(function ($query) { if ($this->streetCode != '') { $query->where('l.town_code', $this->streetCode); } else { $query->where('l.county_code', $this->areaCode); } }) ->count(); $online = Device::alias('d') ->join('product_device pd', 'd.id=pd.device_id') ->join('land_product lp', 'pd.product_id=lp.product_id') ->join('land l', 'l.id=lp.land_id') ->where(function ($query) { if ($this->streetCode != '') { $query->where('l.town_code', $this->streetCode); } else { $query->where('l.county_code', $this->areaCode); } })->where('d.is_online', 1)->count(); $offline = Device::alias('d') ->join('product_device pd', 'd.id=pd.device_id') ->join('land_product lp', 'pd.product_id=lp.product_id') ->join('land l', 'l.id=lp.land_id') ->where(function ($query) { if ($this->streetCode != '') { $query->where('l.town_code', $this->streetCode); } else { $query->where('l.county_code', $this->areaCode); } })->where('d.is_online', 2)->count(); return $this->success('成功', compact('total', 'online', 'offline')); } }