1
0
Fork 0
internet-everythings-agricu.../app/Http/Controllers/Api/DeviceController.php

61 lines
1.7 KiB
PHP

<?php
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\{Device, MonitorDevice, RegionMonitor};
use DB;
class DeviceController extends Controller
{
/**
* 获取设备监控的类别列表;
*/
public function getMonitorMode(){
}
public function getMonitorData(Request $request){
$baseId = $request->input('base_id');
$deviceType = $request->input('device_type');
$deviceColumn = $request->input('device_column'); //指定字段
}
/**
* 统计某个实验田下所有设备状态数量
*/
public function typeStateNum(Request $request)
{
$regionId = $request->input('region_id', 0);
$query = Device::query();
if($regionId){
$monitorIds = RegionMonitor::where('region_id', $regionId)->pluck('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);
}
}