add 大屏-检测设备数量统计

This commit is contained in:
chenbo 2023-12-14 16:33:06 +08:00
parent 6d42143fd2
commit e9d72f8d14
1 changed files with 48 additions and 3 deletions

View File

@ -5,6 +5,7 @@ namespace app\api\controller\dataview;
use app\api\controller\BaseApiController; use app\api\controller\BaseApiController;
use app\common\model\device\Device; use app\common\model\device\Device;
use app\common\model\device\MonitorAlarm; use app\common\model\device\MonitorAlarm;
use app\common\model\land\LandPlant;
use think\App; use think\App;
use think\Exception; use think\Exception;
use think\exception\ErrorException; use think\exception\ErrorException;
@ -13,7 +14,7 @@ use think\exception\ValidateException;
class DeviceController extends BaseApiController class DeviceController extends BaseApiController
{ {
public array $notNeedLogin = ['deviceAlarmCount']; public array $notNeedLogin = ['deviceAlarmCount', 'deviceCount'];
public $areaCode; public $areaCode;
public $streetCode; public $streetCode;
@ -28,6 +29,7 @@ class DeviceController extends BaseApiController
} }
} }
// 设备告警统计
public function deviceAlarmCount() public function deviceAlarmCount()
{ {
$list = MonitorAlarm::alias('ma')->field('ma.*,d.code AS device_code,d.name AS device_name') $list = MonitorAlarm::alias('ma')->field('ma.*,d.code AS device_code,d.name AS device_name')
@ -37,9 +39,9 @@ class DeviceController extends BaseApiController
->join('land l', 'l.id=lp.land_id') ->join('land l', 'l.id=lp.land_id')
->where(function ($query) { ->where(function ($query) {
if ($this->streetCode != '') { if ($this->streetCode != '') {
$query->where('l.street_code', $this->streetCode); $query->where('l.town_code', $this->streetCode);
} else { } else {
$query->where('l.area_code', $this->areaCode); $query->where('l.county_code', $this->areaCode);
} }
}) })
->whereWeek('ma.create_time') ->whereWeek('ma.create_time')
@ -48,4 +50,47 @@ class DeviceController extends BaseApiController
return $this->success('成功', compact('list')); 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', 0)->count();
return $this->success('成功', compact('total', 'online', 'offline'));
}
} }