This commit is contained in:
chenbo 2024-02-04 15:25:26 +08:00
parent 3a7be52fa5
commit 15977d3d89
1 changed files with 50 additions and 30 deletions

View File

@ -5,7 +5,11 @@ 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\farm\Farm;
use app\common\model\fence_house\FenceHouse;
use app\common\model\land\LandPlant; use app\common\model\land\LandPlant;
use app\common\model\land\Product;
use app\common\model\product\ProductDevice;
use think\App; use think\App;
use think\Exception; use think\Exception;
use think\exception\ErrorException; use think\exception\ErrorException;
@ -59,43 +63,59 @@ class DeviceController extends BaseApiController
// 监测设备数量统计 // 监测设备数量统计
public function deviceCount() public function deviceCount()
{ {
$total = Device::alias('d') $total = Device::alias('d')->where(function ($query) {
->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 != '') { if ($this->streetCode != '') {
$query->where('l.town_code', $this->streetCode); $farmIds = Farm::where('street', $this->streetCode)->column('id');
$fenceHouseIds = FenceHouse::whereIn('farm_id', $farmIds)->column('id');
$productIds = Product::whereIn('fence_house_id', $fenceHouseIds)->column('id');
$deviceIds = ProductDevice::whereIn('product_id', $productIds)->column('device_id');
$query->whereIn('d.id', $deviceIds);
} else { } else {
$query->where('l.county_code', $this->areaCode); $farmIds = Farm::where('area', $this->areaCode)->column('id');
$fenceHouseIds = FenceHouse::whereIn('farm_id', $farmIds)->column('id');
$productIds = Product::whereIn('fence_house_id', $fenceHouseIds)->column('id');
$deviceIds = ProductDevice::whereIn('product_id', $productIds)->column('device_id');
$query->whereIn('d.id', $deviceIds);
} }
}) })
->count(); ->count();
$online = Device::alias('d') $online = Device::alias('d')->where(function ($query) {
->join('product_device pd', 'd.id=pd.device_id') if ($this->streetCode != '') {
->join('land_product lp', 'pd.product_id=lp.product_id') $farmIds = Farm::where('street', $this->streetCode)->column('id');
->join('land l', 'l.id=lp.land_id') $fenceHouseIds = FenceHouse::whereIn('farm_id', $farmIds)->column('id');
->where(function ($query) { $productIds = Product::whereIn('fence_house_id', $fenceHouseIds)->column('id');
if ($this->streetCode != '') { $deviceIds = ProductDevice::whereIn('product_id', $productIds)->column('device_id');
$query->where('l.town_code', $this->streetCode); $query->whereIn('d.id', $deviceIds);
} else { } else {
$query->where('l.county_code', $this->areaCode); $farmIds = Farm::where('area', $this->areaCode)->column('id');
} $fenceHouseIds = FenceHouse::whereIn('farm_id', $farmIds)->column('id');
})->where('d.is_online', 1)->count(); $productIds = Product::whereIn('fence_house_id', $fenceHouseIds)->column('id');
$offline = Device::alias('d') $deviceIds = ProductDevice::whereIn('product_id', $productIds)->column('device_id');
->join('product_device pd', 'd.id=pd.device_id') $query->whereIn('d.id', $deviceIds);
->join('land_product lp', 'pd.product_id=lp.product_id') }
->join('land l', 'l.id=lp.land_id') })->where('d.is_online', 1)->count();
->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')); $offline = Device::alias('d')->where(function ($query) {
if ($this->streetCode != '') {
$farmIds = Farm::where('street', $this->streetCode)->column('id');
$fenceHouseIds = FenceHouse::whereIn('farm_id', $farmIds)->column('id');
$productIds = Product::whereIn('fence_house_id', $fenceHouseIds)->column('id');
$deviceIds = ProductDevice::whereIn('product_id', $productIds)->column('device_id');
$query->whereIn('d.id', $deviceIds);
} else {
$farmIds = Farm::where('area', $this->areaCode)->column('id');
$fenceHouseIds = FenceHouse::whereIn('farm_id', $farmIds)->column('id');
$productIds = Product::whereIn('fence_house_id', $fenceHouseIds)->column('id');
$deviceIds = ProductDevice::whereIn('product_id', $productIds)->column('device_id');
$query->whereIn('d.id', $deviceIds);
}
})->where('d.is_online', 2)->count();
$alarmCount = 0;
$todayAlarmCount = 0;
return $this->success('成功', compact('total', 'online', 'offline', 'alarmCount', 'todayAlarmCount'));
} }